<?php

	//obsluga protokolu http po stronie serwera
	
	//definy typow danych dla statycznych metod GET i POST
	define("RAW",	0);
    define("NONE",	1);
    define("INT",	2);
    define("TEXT",	3);
    define("TEXT_LEN",	4);
    define("FLOAT",	5);
    define("BOOL",	6);
    define("MONEY",	7);
	
    /*
     * 
     * 
     */

	class CHttp
	{
		//wysyla przekierowanie
		// $szUrl - adres przekierowania
		// $bDoSaveGetParams - dba o to aby wartosci get byly przekazane do kolejnego wywolania po redirekcie
		//
		// np.
		// jesli mamy /index.php/user/?user_id=5
		// i przekierowujemy na /index.php/innymodul/
		// to adres po przekierowaniu bedzie mial format /index.php/innymodul/?user_id=5
		//
		// czyli zachowujemy parametry get :
		 
		static function Redirect($szUrl,$bDoSaveGetParams = false)
		{
			
			
			if($bDoSaveGetParams)
			{
				$aGet = &$_GET;
				
				$szGet = '';
				$bIsFirst = true;
				
				foreach($_GET as $szKey => &$szVal) 
				{
	     	   		if($bIsFirst) 
	     	   		{
	            		$szGet = '?'.$szKey.'='.$szVal;
	            		$bIsFirst = false;
	       	 		 }	
	       	 		 else 
	       	 		 {
	            		$szGet .= '&'.$szKey.'='.$szVal;
	       	 		 }
        		}
        		
        		header('Location: '.URL_SUFFIX.$szUrl.$szGet);
				exit();
			}
			else
			{
				header('Location: '.URL_SUFFIX.$szUrl);
				exit();
			}
		}
		
		static function RedirectB($szUrl)
		{
			header('HTTP/1.1 301 Moved Permanently');
			header('Location: '.$szUrl);
		}
		
		//wymusza na kliencie zaniechanie cache'owania
		static function NoCache()
		{
			header("Cache-Control: no-store, no-cache, must-revalidate");
			header("Cache-Control: pre-check=0, post-check=0, max-age=0");
			header("Cache-Control: No-Cache");
			header("Pragma: No-Cache");
			header("Expires: Mon, 26 Jul 1997 01:00:00 GMT");
		}
		
		//zbieranie danych otrzymanych via GET
		static function Get($szParam,$iDataType = NONE,$iLen = 0)
		{
			if(!isset($_GET[$szParam]))
			{
				return '';
			}
			
			if( $_GET[$szParam] == '')
			{
				return '';
			}
			
			//check wheter to use  htmlspecialchars()
				
			if($iLen == 0)
			{
				$szData = substr($_GET[$szParam],0,intval(GET_MAX_LEN));
			}
			else if($iLen > 0)
			{
				$szData = substr($_GET[$szParam],0,intval($iLen));
			}

			
			
			$szData = trim($szData);
			$szData = urldecode($szData);
			$szData = strip_tags($szData);
				
			
			
			if($iDataType == INT)
			{
				return intval($szData);
			}
			else if($iDataType == TEXT)
			{
				$szData = stripslashes($szData);
				$szData = addslashes($szData);
				
				return strval($szData);
			}
			else if($iDataType == TEXT_LEN)
			{
				return strlen(strval($szData));
			}
			else if($iDataType == FLOAT)
			{
				return floatval($szData);
			}
			else if($iDataType == BOOL)
			{
				return  ($szData == 1) ? '1' : '0';
			}
			else if($iDataType == MONEY)
			{   
				
				$szData = strtr($szData,',','.');
			
				$szData = number_format($szData,2,'.','');
				
				if($szData == '0.00')
				return '';
			}

			
			return $szData; 
		}

		//zbiera dane otrzymane via POST
		static function Post($szParam,$iDataType = NONE,$iLen = 0)
		{
			if( !isset($_POST[$szParam]) )
			{
				return '';
			}
			
			if( $_POST[$szParam] == '')
			{
				return '';
			}
			
			//check wheter to use  htmlspecialchars()
			if($iLen == 0)
			{
				$szData = substr($_POST[$szParam],0,intval(POST_MAX_LEN));
			}
			else if($iLen > 0)
			{
				$szData = substr($_POST[$szParam],0,intval($iLen));
			}
				
			//$szData = stripslashes($szData);
			
			if($iDataType == RAW)
			{
				//protecting our template system
				$szData = str_replace('$','&#036;',$szData);
				$szData = str_replace('{','&#123;',$szData);
				$szData = str_replace('}','&#125;',$szData);
				$szData = str_replace('|','&#124;',$szData);

				//recovering TinyMCE changes
				$szData = str_replace('&gt;','>',$szData);
				$szData = str_replace('&lt;','<',$szData);
			
				//$szData = stripslashes($szData);
				//$szData = addslashes($szData);

				return $szData;
			}
			else
			{
				$szData = trim($szData);
				$szData = urldecode($szData);
				$szData = strip_tags($szData);
			}
			
			if($iDataType == INT)
			{
				return intval($szData);
			}
			else if($iDataType == TEXT)
			{
				$szData = stripslashes($szData);
				$szData = addslashes($szData);
				
				return strval($szData);
			}
			else if($iDataType == TEXT_LEN)
			{
				return strlen(strval($szData));
			}
			else if($iDataType == FLOAT)
			{
				return floatval($szData);
			}
			else if($iDataType == BOOL)
			{
				return  ($szData == 1) ? '1' : '0';
			}
			else if($iDataType == MONEY)
			{
				$szData = strtr($szData,',','.');
			
				$szData = number_format($szData,2,'.','');
				
				if($szData == '0.00')
					return '';
			}

			return $szData;
		}
		
		//zbiera dane tablicowe otrzymane via post
		static function PostArray($szArrayName,$iDataType,$iDataLen = 0)
		{	
			if( !isset($_POST[$szArrayName]) )
	        	return '';

        	$aArray = $_POST[$szArrayName];

        	if( !is_array($aArray) )
            	return '';
        		
			foreach($aArray as $szKey => &$szVal)
			{
				if($iDataLen == 0)
	            {
	                $szVal = substr($szVal,0,intval(POST_MAX_LEN));
	            }
	            else if($iDataLen > 0)
	            {
	                $szVal = substr($szVal,0,intval($iDataLen));
	            }
				
	            $szVal = trim($szVal);
            	$szVal = urldecode($szVal);
            	$szVal = strip_tags($szVal);
	            
	            if($iDataType == INT)
	            {
	                $szVal = intval($szVal);
	            }
	            else if($iDataType == TEXT)
	            {
	                $szVal = stripslashes($szVal);
	                $szVal = addslashes($szVal);
	                
	                $szVal = strval($szVal);
	            }
	            else if($iDataType == TEXT_LEN)
	            {
	                $szVal = strlen(strval($szVal));
	            }
	            else if($iDataType == FLOAT)
	            {
	                $szVal = floatval($szVal);
	            }
	            else if($iDataType == BOOL)
	            {
	                $szVal = (bool) $szVal;
	            }
	            else if($iDataType == MONEY)
	            {
	                $szData = strtr($szData,',','.');
			
					$szData = number_format($szData,2,'.','');
					
					if($szData == '0.00')
						return '';
	            }    
			}
			
			return $aArray;
		}
		
		
		//zwraca dane z metody post i get
		static function GetPost($szParam,$iDataType = NONE,$iLen = 1024)
		{
			$szGetData  = isset($_GET[$szParam])  ? $_GET[$szParam] : ''; 
			$szPostData = isset($_POST[$szParam]) ? $_POST[$szParam]: ''; 
			
			$szData = ($szGetData != '') ? $szGetData : $szPostData;
			
			$szData = substr($szData,0,$iLen);
			
			if($iDataType == RAW)
			{
				//protecting our template system
				$szData = str_replace('$','&#036;',$szData);
				$szData = str_replace('{','&#123;',$szData);
				$szData = str_replace('}','&#125;',$szData);
				$szData = str_replace('|','&#124;',$szData);

				//recovering TinyMCE changes
				$szData = str_replace('&gt;','>',$szData);
				$szData = str_replace('&lt;','<',$szData);
			
				//$szData = stripslashes($szData);
				//$szData = addslashes($szData);

				return $szData;
			}
			else
			{
				$szData = trim($szData);
				$szData = urldecode($szData);
				$szData = strip_tags($szData);
			}
			
			if($iDataType == INT)
			{
				return intval($szData);
			}
			else if($iDataType == TEXT)
			{
				$szData = stripslashes($szData);
				$szData = addslashes($szData);
				
				return strval($szData);
			}
			else if($iDataType == TEXT_LEN)
			{
				return strlen(strval($szData));
			}
			else if($iDataType == FLOAT)
			{
				return floatval($szData);
			}
			else if($iDataType == BOOL)
			{
				return  ($szData == 1) ? '1' : '0';
			}
			else if($iDataType == MONEY)
			{
				$szData = strtr($szData,',','.');
			
				$szData = number_format($szData,2,'.','');
				
				if($szData == '0.00')
					return '';
			}

			return $szData;
		}
	}

	//obsluga pobierania informacji z przyjaznych linkow
	class CHttpParam
	{
		static function ToArray()
		{
			if( !isset($_SERVER["REQUEST_URI"]) ) { return array(); }
			
			$szUrl = substr($_SERVER["REQUEST_URI"],0,MAX_QUERY_LEN);
			$szUrl = substr($szUrl,strrpos($szUrl,'/')+1);
			
			if($szUrl == '') { return array(); }
			
			$aUrl = explode(',',$szUrl);
			
			return $aUrl;
		}
		
		static function Get($iPos,$iDataType = NONE,$iLen = 0)
		{
			$aUrl = CHttpParam::ToArray();
			
			if( !isset($aUrl[$iPos]) || $aUrl[$iPos] == '' ) 
			{
				return '';
			}
			
			$szData = $aUrl[$iPos];
			$szData = ($iLen > 0) ? substr($szData,0,$iLen) : substr($szData,0,GET_MAX_LEN);
			
			$szData = trim($szData);
			$szData = urldecode($szData);
			$szData = strip_tags($szData);
			
			if($iDataType == INT)
			{
				return intval($szData);
			}
			else if($iDataType == TEXT)
			{
				$szData = stripslashes($szData);
				$szData = addslashes($szData);
				
				return strval($szData);
			}
			else if($iDataType == BOOL)
			{
				return  ($szData == 1) ? '1' : '0';
			}
		}
	}
	
?>